<?php
/**
 * Created by PhpStorm.
 * User: shwy
 * Date: 2017/5/18
 * Time: 16:12
 */

/**
 * 获取自定义数据库配置文件
 * @param string $group database.php的key名
 * @return mixed
 */
function _getDb($group = 'aliyun_procurement')
{
    static $db = array();
    if (!isset($db[$group])) {
        $CI =& get_instance();
        $db[$group] = $CI->load->database($group, TRUE);
        $db_name = 'ist_' . $group;
        $CI->$db_name = $db[$group];
    }
    return $db[$group];
}

/**
 * 封装弹窗函数并返回上一级刷新,或者返回到主页
 * @param $alertName
 * @return string
 */
function __alert($alertName)
{
    return "<script>alert('$alertName');history.go(-1);window.location.reload();</script>";
}

/**
 * 分页辅助函数
 * @param int $page_num 每页显示多少条
 * @param int $total_nums 总共有多少条
 * @return mixed    $config     返回config配置数组
 * todo CI自带分页是否删除不用
 */
function __paging($page_num, $total_nums)
{

//        print_r($this->config->item('base_url'));
//        die();
//        $a = __paging($page_num,$total_nums);
    $config['total_rows'] = $total_nums;//总共多少条数据
    $config['per_page'] = $page_num;//每页显示几条数据
    $config['full_tag_open'] = '<p>';
    $config['full_tag_close'] = '</p>';
    $config['first_link'] = '首页';
    $config['first_tag_open'] = '<li>';//“第一页”链接的打开标签。
    $config['first_tag_close'] = '</li>';//“第一页”链接的关闭标签。
    $config['last_link'] = '尾页';//你希望在分页的右边显示“最后一页”链接的名字。
    $config['last_tag_open'] = '<li>';//“最后一页”链接的打开标签。
    $config['last_tag_close'] = '</li>';//“最后一页”链接的关闭标签。
    $config['next_link'] = '下一页';//你希望在分页中显示“下一页”链接的名字。
    $config['next_tag_open'] = '<li>';//“下一页”链接的打开标签。
    $config['next_tag_close'] = '</li>';//“下一页”链接的关闭标签。
    $config['prev_link'] = '上一页';//你希望在分页中显示“上一页”链接的名字。
    $config['prev_tag_open'] = '<li>';//“上一页”链接的打开标签。
    $config['prev_tag_close'] = '</li>';//“上一页”链接的关闭标签。
    $config['cur_tag_open'] = '<li class="am-active"><a href="#">';//“当前页”链接的打开标签。
    $config['cur_tag_close'] = '</a></li>';//“当前页”链接的关闭标签。
    $config['num_tag_open'] = '<li>';//“数字”链接的打开标签。
    $config['num_tag_close'] = '</li>';

    return $config;
}

/**
 * upload类库的配置文件
 * @param $prefix
 * @param $where
 * @return mixed
 */
function __upload($prefix, $where)
{

    // 上传文件到服务器目录
    $config['upload_path'] = './upload/' . $where;
    // 允许上传哪些类型
    $config['allowed_types'] = 'gif|png|jpg|jpeg|docx|doc|ppt|pdf|xls|xlsx';
    // 上传后的文件名，用uniqid()保证文件名唯一
    $config['file_name'] = $prefix . date('ymd') . uniqid();

    return $config;

}

/**
 * 自定义日志写入函数
 * @param $level string 设置日志开头
 * @param $data  mixed  写入的日志数据
 */
function __logInfo($level, $data)
{

    $fileName = './application/logs/log-' . date('Y-m-d') . '.log';

    $format = $level . ' - ' . date('Y-m-d H:i:s') . ' --> ' . $data . "\r\n";

    $fopen = fopen($fileName, 'a+');

    fputs($fopen, $format);

    fclose($fopen);
}

/**
 * 根据限期倒计时
 * @param $endTime  int  根据日期转换过的时间错
 * @return array|string     返回 天,时,分,秒字段
 */
function __downTime($endTime)
{
    $now = strtotime(date('Y-m-d H:i:s'));

    $end_time = $endTime;

    $secondtime = $end_time - $now;//期限时间减去现在时间 剩余时间

    $second = $secondtime % 60;//取余得到秒数

    $nowtime = floor($secondtime / 60);//转化成分钟

    $minute = $nowtime % 60;//取余得到分钟数

    $nowtime = floor($nowtime / 60);//转化成小时

    $hour = $nowtime % 24;//取余得到小时数

    $nowtime = floor($nowtime / 24);//转化成天数

    $day = floor($nowtime);//得到天数

    return $result = [
        'day' => $day,      //天数
        'hour' => $hour,      //小时
        'minute' => $minute,      //多少分钟
        'second' => $second,      //多少瞄
    ];


    return '还剩余' . $day . '多少小时' . $hour . '多少分钟' . $minute . '多少分钟' . $second;
}

/**
 * 判断是否登录,未登录跳转到主页面
 */
function __check_login()
{
    if (!isset($_COOKIE['username']) || empty($_COOKIE['username'])) {
        redirect('/');
    }
}

/**
 * 判断变量的正确性
 * @param array $data 要验证的数组
 * @return bool  bool   true为正确/false错误
 */
function __checkData($data)
{
    if (count(array_keys($data)) == count(array_filter($data))) {
        return true;
    } else {
        return false;
    }
}

/**
 * 判断某个字符串是否在另一个字符串中
 * @param string $str 要搜索的条件值  'aaa'
 * @param string $target 被搜索的字符串  'This is a test string'
 * @return bool    boole    true为正确/false错误
 */
function __checkStr($str, $target)
{
    $tmpArr = explode($str, $target);
    //print_r($tmpArr);
    if (count($tmpArr) > 1) return true;
    else return false;
}

/**
 * 判断变量是否存在，并且是否为真
 * @param mixed $arg 要判断的变量
 * @return bool     bool    true为正确/false错误
 */
//todo 考虑是否换成一次判断多个的方法
function __checkTrue($arg)
{
    if (isset($arg) && $arg !== '') {
        return true;
    } else {
        return false;
    }
}

/**
 * 通联快捷支付用户注册函数
 * @return string json 请求成功之后的返回值
 */
function __reg()
{
    //初始化
    $signType = '0';   //类型
    $merchantId = '008330148163073';  //商户号
    $partnerUserId = uniqid();  //唯一编码
    $key = 1234567890;   //加密的key

    // 生成签名字符串。
    $bufSignSrc = "";
    if ($signType !== "")
        $bufSignSrc = $bufSignSrc . "&signType=" . $signType . "&";
    if ($merchantId != "")
        $bufSignSrc = $bufSignSrc . "merchantId=" . $merchantId . "&";

    $bufSignSrc = $bufSignSrc . "partnerUserId=" . $partnerUserId . "&";
    if ($key != "")
        $bufSignSrc = $bufSignSrc . "key=" . $key . "&"; //key为MD5密钥，密钥是在通联支付网关商户服务网站上设置。


    //签名，设为signMsg字段值。
    $signMsg = strtoupper(md5($bufSignSrc));

    $url = 'https://cashier.allinpay.com/usercenter/merchant/UserInfo/reg.do?signType=' . $signType . '&merchantId=' . $merchantId . '&partnerUserId=' . $partnerUserId . '&signMsg=' . $signMsg;

    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
    $result = curl_exec($ch);
    curl_close($ch);


    return $result;
}

/**
 * 程序运行时间
 */
function __runTime()
{
    $starttime = explode(' ', microtime());
    echo microtime();
    /*········以下是代码区·········*/
    for ($i = 0; $i < 1000000; $i++) {
        $i;
    }
    /*········以上是代码区·········*/
    //程序运行时间
    $endtime = explode(' ', microtime());
    $thistime = $endtime[0] + $endtime[1] - ($starttime[0] + $starttime[1]);
    $thistime = round($thistime, 3);
    echo "本网页执行耗时：" . $thistime . " 秒。" . time();
}

/**
 * 格式化变量并die结束
 * @param mixed $arg 要格式化的变量
 */
function __format($arg)
{
    echo '<pre>';
    print_r($arg);
    die;
}

/**
 * 短连接生产文件
 * @param string    $url    原url
 * @return string   url     短链接生产的地址
 */
function __shortUrl($url)
{
    $CI = &get_instance();
    $shortUrl = $CI->config->item('shortUrl')['filename'];
    if (!file_exists('./'.$shortUrl)) {
        mkdir('./'.$shortUrl);
    }
    if (isset($url)) {
        $origin = $url;
        if (strlen($origin) > 10) {
            $filename = count(scandir($shortUrl)) - 1;    // strip php self . ..

            file_put_contents('./'.$shortUrl.'/' . $filename,
                '<script type="text/javascript">location.href="' . $origin . '"</script>');
            $shortened = "http://" . $_SERVER['HTTP_HOST'] . dirname($_SERVER['PHP_SELF']) . $shortUrl.'/' . $filename;

            return $filename;

            echo $origin . '<br>';
            echo $shortened;
        } else {
            return $url;

            echo "The URL you entered is NOT valid.";
        }
    }
}

/**
 * curl请求，可请求 https
 * $param string $remote_server     要请求的url地址
 * $param string $post_string     post json数据字符串
 * $return string result          json字符串
 */
function __request_by_curl($remote_server, $post_string) {
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $remote_server);
    curl_setopt($ch, CURLOPT_POST, 1);
    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5);
    curl_setopt($ch, CURLOPT_HTTPHEADER, array ('Content-Type: application/json;charset=utf-8'));
    curl_setopt($ch, CURLOPT_POSTFIELDS, $post_string);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    // 线下环境不用开启curl证书验证, 未调通情况可尝试添加该代码
//             curl_setopt ($ch, CURLOPT_SSL_VERIFYHOST, 0);
//             curl_setopt ($ch, CURLOPT_SSL_VERIFYPEER, 0);
    $data = curl_exec($ch);
    curl_close($ch);

    return $data;
}


//模块权限id  :id1,
//用户id           id2,
//function qx(id1,id2){
//    1. id2是否合法用户；
//  2, id2所在角色是否有id1的权限，有 return true;
//  3, id2用户是否有id1权限，有 return true;
//  4 return false;
//}

